namespace Atom.Utility
{
    using System;
    using System.Security.Cryptography;
    using System.Text;

    public class CryptographyUti
    {
        private string _key;

        public string Decrypt(string strEncrypted)
        {
            string str;
            try
            {
                str = Decrypt(strEncrypted, this._key);
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return str;
        }

        public static string Decrypt(string strEncrypted, string strKey)
        {
            string str3;
            try
            {
                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                MD5CryptoServiceProvider provider2 = new MD5CryptoServiceProvider();
                string s = strKey;
                byte[] buffer = provider2.ComputeHash(Encoding.Unicode.GetBytes(s));
                provider2 = null;
                provider.Key = buffer;
                provider.Mode = CipherMode.ECB;
                byte[] inputBuffer = Convert.FromBase64String(strEncrypted);
                string str2 = Encoding.Unicode.GetString(provider.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length));
                provider = null;
                str3 = str2;
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return str3;
        }

        public string Encrypt(string strToEncrypt)
        {
            string str;
            try
            {
                str = Encrypt(strToEncrypt, this._key);
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return str;
        }

        public static string Encrypt(string strToEncrypt, string strKey)
        {
            string str2;
            try
            {
                TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
                MD5CryptoServiceProvider provider2 = new MD5CryptoServiceProvider();
                string s = strKey;
                byte[] buffer = provider2.ComputeHash(Encoding.Unicode.GetBytes(s));
                provider2 = null;
                provider.Key = buffer;
                provider.Mode = CipherMode.ECB;
                byte[] bytes = Encoding.Unicode.GetBytes(strToEncrypt);
                str2 = Convert.ToBase64String(provider.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length));
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return str2;
        }

        public string Key
        {
            set
            {
                this._key = value;
            }
        }
    }
}
